import {
    reqUserInfo, reqUpdateUserInfo, reqUserAddress, reqSaveAddress, reqUpdateAddress,
    reqDefaultAddress, reqOrderList, reqOrderInfo, reqPayOrder, reqCancelOrder, reqChangeDefaultAddress,
    reqUpdateUserAvatar, reqDealInfo
} from "@/api"
// state：仓库存储数据的地方
const state = {
    userInfo: {}
}
// mutations：修改state的唯一手段，因此第一个参数必须是state，第二个参数为将要修改的数据
const mutations = {
    setUserInfo(state, res) {
        state.userInfo = res
        state.userInfo.showAvatar = res.avatar
        state.userInfo.avatar = [
            {
                url: res.avatar
            }
        ]
    },


}
// action：书写业务逻辑（method方法）
const actions = {
    // 获取用户信息
    async getUserInfo({ commit }) {
        let res = await reqUserInfo()
        if (res.success) commit('setUserInfo', res.data)
        return res
    },
    // 修改用户信息
    async updateUserInfo({ commit }, data) {
        return await reqUpdateUserInfo(data)
    },
    // 获取用户地址
    async getUserAddress({ commit }) {
        return await reqUserAddress()
    },
    // 保存地址
    async saveAddress({ commit }, data) {
        return await reqSaveAddress(data)
    },
    // 更新地址
    async updateAddress({ commit }, data) {
        return await reqUpdateAddress(data)
    },
    // 获取默认地址
    async getDefaultAddress({ commit }) {
        return await reqDefaultAddress()
    },
    // 获取全部订单
    async getOrderList({ commit }, data) {
        return await reqOrderList(data)
    },
    // 获取某个订单信息
    async getOrderInfo({ commit }, data) {
        return await reqOrderInfo(data)
    },
    // 支付
    async payOrder({ commit }, data) {
        return await reqPayOrder(data)
    },
    // 取消订单
    async cancelOrder({ commit }, data) {
        return await reqCancelOrder(data)
    },
    // 更换默认地址
    async changeDefaultAddress({ commit }, data) {
        return await reqChangeDefaultAddress(data)
    },
    // 更新用户头像
    async updateUserAvatar({ commit }, data) {
        return await reqUpdateUserAvatar(data)
    },
    // 获取服务记录
    async getDealInfo({ commit }){
        return await reqDealInfo()
    },
   

}
// getters：计算属性
const getters = {
    username: state => {
        return state.userInfo.username
      },
}

export default {
    state,
    mutations,
    actions,
    getters
}